/*
 * Copyright 2013 Agustina Martinez-Garcia

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
 */
package uk.ljmu.qudexapps.xmllib.services;

import java.io.InputStream;
import java.util.List;

import uk.ljmu.fedoraifz.restrequests.FedoraOperationsAPIM;
import uk.ljmu.qudexapps.xmllib.exceptions.FoxmlException; //import uk.ljmu.qudexapps.xmllib.model.FoxmlBeans;
import uk.ljmu.qudexapps.xmllib.model.CollectionElement;
import uk.ljmu.qudexapps.xmllib.utilities.IngestionResults;

/**
 * Interface to generate QuDeX XML instances after the creation of a Fedora
 * collection
 * 
 * @author agustinamartinez
 * 
 */
public interface QudexFoxmlService {

    public void ingestQudexCollectionsSpreadsheet(List<String> collectionsIds, InputStream collectionSs)
    throws FoxmlException;

    public void ingestFileLevelSpreadsheet(List<String> collectionsIds,
	    InputStream fileLevelSs) throws FoxmlException;

    public void setFileType(String file);

    public List<IngestionResults> getObjResults();

    public void setObjResults(List<IngestionResults> objResults);

    public void setQudexCollections(boolean isQudexCollections);

    public String getProgressStatus();

    public FedoraOperationsAPIM getFedoraObject();
    
    public void cleanFullInstance();
    
    public QudexFedoraObjects getQuObject();
    
    public List<String> getQudexCollections(String collectionId);
    
    public List<CollectionElement> getQudexCollectionsTree();
    
    public String getQudexRootParent(String collectionId);
    
    public void setOriginalSpreadsheetName(String originalSpreadsheetName); 
    
    public String getOriginalSpreadsheetName();
    
    public void setOriginalSpreadsheetPath(String path);

	public List<String> getQudexRootCollections();
	/*AMG Get only those QuDEx collections that already have a QuDEx instance*/
	public List<String> getQudexInstanceCollections();

	public List<String> getQudexCollectionDocuments(String collectionId);

	public String getTitle(String fedoraPid);
}
